import { remote, clipboard } from 'electron'
const { Menu, MenuItem } = remote

const setMenu = function () {
    window.addEventListener('contextmenu', function (e) {
        e.preventDefault()
        let menu = new Menu()

        // ↓ 情况一：任何情况下，都显示 复制 和 粘贴 按钮
        //添加菜单功能, label: 菜单名称， accelerator：快捷键，click：点击方法
        menu.append(new MenuItem({ label: '复制', accelerator: 'CommandOrControl+C', click: copyString }))
        //添加菜单分割线
        menu.append(new MenuItem({ type: 'separator' }))
        //添加菜单功能
        menu.append(new MenuItem({ label: '粘贴', accelerator: 'CommandOrControl+V', click: printString }))
        // ↑ 情况一

        // ↓ 情况二：可复制时，显示复制，可粘贴时显示粘贴
        let flag = false // menu中是否有菜单项，true有，false没有
        const tagName = document.activeElement.tagName // 焦点元素的tagName
        const str = clipboard.readText() // 剪贴板中的内容
        const selectStr = _this.getSelection() // 选中的内容
        const text = e.target.innerText || '' // 目标标签的innerText
        const value = e.target.value || '' // 目标标签的value

        if (selectStr) { // 如果有选中内容
            flag = true
            // 在 选中的元素或者输入框 上面点右键，这样在选中后点别处就不会出现右键复制菜单
            if (text.indexOf(selectStr) !== -1 || value.indexOf(selectStr) !== -1) {
				menu.append(new MenuItem({ label: '复制', click: copyString }))
			}
        }
        if (str && (tagName === 'INPUT' || tagName === 'TEXTAREA')) { // 若为输入框 且 剪贴板中有内容，则显示粘贴菜单
            flag = true
            menu.append(new MenuItem({ label: '粘贴', click: printString }))
        }

        // ↑ 情况二


        // menu中有菜单项 且（有选中内容 或 剪贴板中有内容）
        if (flag && (_this.getSelection() || str)) {
            // 将此menu菜单作为 当前窗口 remote.getCurrentWindow() 中的上下文菜单弹出。
            menu.popup(remote.getCurrentWindow())
        }
    }, false)
    // 写入剪贴板方法
    function copyString () {
        console.log('dddddddd')
        const str = getSelection() // 获取选中内容
        clipboard.writeText(str) // 写入剪贴板
    }
    // 获取剪贴版内容写入当前焦点元素中
    function printString () {
        if (document.activeElement) {
            const str = clipboard.readText() // 获取剪贴板内容
            document.activeElement.value = str // 写入焦点元素
            clipboard.clear() // 清空剪贴板
        }
    }
}

// 获取选中内容
function getSelection(){
    var text = ''
    if (window.getSelection) { // 除IE9以下 之外的浏览器
        text = window.getSelection().toString()
    } else if (document.selection && document.selection.type !== 'Control') { //IE9以下，可不考虑
        text = document.selection.createRange().text
    }
    if (text) {
        return text
    }
}

module.exports = setMenu;
